package com.tanjor.sys.dubbo.impl.interfaces;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.tanjor.sys.dubbo.dto.SysMenuDTO;

import com.tanjor.common.datatable.PageReq;
import com.tanjor.common.datatable.PageResp;
import com.tanjor.common.exception.BusinessException;

/**
 * <p>
 *  dubbo服务类
 * </p>
 *
 * @author Liuwy
 * @since 2017-04-02
 */
public interface ISysMenuDubbo {

	/**
	 * 根据条件分页查询,返回datatables表格数据
	 * @param pageReq
	 * @return
	 */
	public PageResp findPage(PageReq pageReq);
	
	/**
	 * 新增数据
	 * @param entityDTO
	 * @return Map<String,Object>
	 * @throws Exception
	 */
	public Map<String,Object> insert(SysMenuDTO entityDTO) throws BusinessException;
	
	/**
	 * 根据主键修改记录
	 * @param entityDTO
	 * @return Map<String,Object>
	 * @throws Exception
	 */
	public Map<String,Object> update(SysMenuDTO entityDTO) throws BusinessException;
	
	/**
	 * 根据主键删除记录
	 * @param id
	 * @throws Exception
	 */
	public Map<String, Object> deleteById(Serializable id) throws BusinessException;
	
	/**
	 * 根据主键查找记录
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public SysMenuDTO findById(Serializable id);
	
	/**
	 * 根据当前角色查找记录
	 * @param roleId
	 * @return
	 */
	public List<Map<String,Object>> findByRole(String roleId);
	
	/**
	 * 查找所有菜单，并根据角色编码构造ztree
	 * @param roleCode
	 * @return
	 */
	public List<Map<String,Object>> findTreeByRole(String roleCode);
	
	/**
	 * 查找所有顶层节点菜单
	 * @param roleCode
	 * @return
	 */
	public List<Map<String,Object>> findTopTree();
	
	/**
	 * 查询所有的菜单
	 * @return
	 */
	public List<SysMenuDTO> findAllMenus();
	
	/**
	 *  保存角色分配的菜单
	 * @param roleCode
	 * @param menuIds
	 * @return
	 * @throws BusinessException
	 */
	public Map<String,Object> saveRoleMenus(String roleCode,String menuIds) throws BusinessException;
	
}
